Skip to content

[TT-16932] CVE-2026-39883 Fix#8081

Merged
buger merged 4 commits intorelease-5.12from
fix/otel-cve
Apr 17, 2026
Merged

[TT-16932] CVE-2026-39883 Fix#8081
buger merged 4 commits intorelease-5.12from
fix/otel-cve

Conversation

@tbuchaillot
Copy link
Copy Markdown
Contributor

Description

Related Issue

Motivation and Context

How This Has Been Tested

Screenshots (if appropriate)

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Refactoring or add test (improvements in base code or adds test coverage to functionality)

Checklist

  • I ensured that the documentation is up to date
  • I explained why this PR updates go.mod in detail with reasoning why it's required
  • I would like a code coverage CI quality gate exception and have explained why

@tbuchaillot tbuchaillot added the deps-reviewed Dependency changes reviewed and approved for CI execution label Apr 17, 2026
@github-actions
Copy link
Copy Markdown
Contributor

API Changes

no api changes detected

@probelabs
Copy link
Copy Markdown
Contributor

probelabs Bot commented Apr 17, 2026

This PR addresses security vulnerability CVE-2026-39883 by upgrading the OpenTelemetry (OTel) dependencies and the Go toolchain version.

While the primary goal is to resolve a CVE, this PR continues to enforce a downgrade of the go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp package to version v0.49.0 using a replace directive. This downgraded version is known to be vulnerable to CVE-2024-36123, a critical denial-of-service vulnerability. Therefore, this PR resolves one security issue while perpetuating another.

Files Changed Analysis

The changes are limited to dependency management files:

  • go.mod: Upgrades the Go version to 1.25.0. The go.opentelemetry.io/otel suite of packages is upgraded from v1.40.0 to v1.43.0. The replace directive for otelhttp is updated to show it replaces the newly required v0.60.0 with the old v0.49.0.
  • go.sum: Checksums are updated to reflect the new versions of the dependencies.

Architecture & Impact Assessment

  • What this PR accomplishes: Patches CVE-2026-39883 by updating the OpenTelemetry library.
  • Key technical changes introduced: This is a dependency-only update. No application code has been changed. The core changes are version bumps for go, opentelemetry, and golang.org/x/sys.
  • Affected system components: The OpenTelemetry library is integral to the system's observability stack. This upgrade will affect all components instrumented for tracing and metrics, including the core request pipeline, middleware, and any custom instrumentation.
graph TD
    A[Client Request] --> B{Gateway};
    B --> C[TraceMiddleware];
    C --> D[Request Pipeline];
    D --> E[Upstream Service];
    subgraph otel ["OTel Instrumentation"]
        C -- Traces --> F[OTel Collector];
        D -- "Metrics/Traces" --> F;
    end
Loading

Scope Discovery & Context Expansion

The scope of this change is system-wide, as it impacts the foundational library used for monitoring and debugging all instrumented operations. The most critical context, drawn from the existing review comments, is the security risk associated with the otelhttp replace directive. The PR does not explain why this override is necessary, which is a significant omission. The review should focus on understanding the justification for this technical debt and the plan to remediate the associated CVE-2024-36123 vulnerability.

Metadata
  • Review Effort: 2 / 5
  • Primary Label: bug

Powered by Visor from Probelabs

Last updated: 2026-04-17T10:31:05.605Z | Triggered by: pr_updated | Commit: 9c9546b

💡 TIP: You can chat with Visor using /visor ask <your question>

@probelabs
Copy link
Copy Markdown
Contributor

probelabs Bot commented Apr 17, 2026

Security Issues (1)

Severity Location Issue
🟡 Warning go.mod:575
The `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp` package is explicitly pinned to an older version `v0.49.0` using a `replace` directive, while newer versions up to `v0.60.0` are available in the dependency tree. While version `v0.49.0` is patched for known vulnerabilities (e.g., CVE-2024-28180), this pinning prevents the project from receiving future security patches and bug fixes for this package, creating a potential security risk.
💡 SuggestionIt is recommended to update the application code to be compatible with the latest version of `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp` and remove the `replace` directive. If the pin is required to avoid breaking changes, a comment should be added to the `go.mod` file explaining the reason for the pin and a ticket should be created to address the required refactoring.

✅ Architecture Check Passed

No architecture issues found – changes LGTM.

Security Issues (1)

Severity Location Issue
🟡 Warning go.mod:575
The `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp` package is explicitly pinned to an older version `v0.49.0` using a `replace` directive, while newer versions up to `v0.60.0` are available in the dependency tree. While version `v0.49.0` is patched for known vulnerabilities (e.g., CVE-2024-28180), this pinning prevents the project from receiving future security patches and bug fixes for this package, creating a potential security risk.
💡 SuggestionIt is recommended to update the application code to be compatible with the latest version of `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp` and remove the `replace` directive. If the pin is required to avoid breaking changes, a comment should be added to the `go.mod` file explaining the reason for the pin and a ticket should be created to address the required refactoring.
\n\n ### ✅ Architecture Check Passed

No architecture issues found – changes LGTM.

\n\n

Performance Issues (1)

Severity Location Issue
🟡 Warning go.mod:576
The `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp` dependency is intentionally kept at an older version (`v0.49.0`) via a `replace` directive, while other OpenTelemetry packages are being upgraded. This prevents the project from benefiting from potential performance optimizations, bug fixes, and new features in later versions of this HTTP instrumentation library. While this may be intentional to avoid breaking changes, it represents a potential performance debt.
💡 SuggestionInvestigate the reasons for pinning this dependency. If possible, upgrade to a more recent version to align with the other OTel dependencies and incorporate any performance improvements. If the pin is required to avoid a specific bug or breaking change, add a comment to the `go.mod` file explaining the rationale for future maintenance.

Powered by Visor from Probelabs

Last updated: 2026-04-17T10:30:06.459Z | Triggered by: pr_updated | Commit: 9c9546b

💡 TIP: You can chat with Visor using /visor ask <your question>

@tbuchaillot
Copy link
Copy Markdown
Contributor Author

Security Issues (1)

Severity Location Issue
🔴 Critical go.mod:576
The replace directive downgrades go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp to v0.49.0, while transitive dependencies require v0.60.0. This older version is vulnerable to CVE-2024-36123, which allows for a denial-of-service attack due to unbounded cardinality in metrics when handling HTTP requests with unrecognized HTTP methods. An attacker could exploit this by sending requests with random HTTP methods, causing excessive memory consumption and potential service outage.
💡 Suggestion

Architecture Issues (1)

Severity Location Issue
🟡 Warning go.mod:575
The replace directive for go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp is updated, but it continues to force a downgrade of the package to v0.49.0. While this change is necessary to accommodate updates in other dependencies that now require otelhttp v0.60.0, pinning a transitive dependency to an older version is a form of technical debt. This practice can prevent the project from benefiting from new features, bug fixes, and security patches in the downgraded package. It indicates an underlying incompatibility that should be addressed directly rather than worked around.
💡 Suggestion

Security Issues (1)

Severity Location Issue
🔴 Critical go.mod:576
The replace directive downgrades go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp to v0.49.0, while transitive dependencies require v0.60.0. This older version is vulnerable to CVE-2024-36123, which allows for a denial-of-service attack due to unbounded cardinality in metrics when handling HTTP requests with unrecognized HTTP methods. An attacker could exploit this by sending requests with random HTTP methods, causing excessive memory consumption and potential service outage.
💡 Suggestion
\n\n ### Architecture Issues (1)
Severity Location Issue
🟡 Warning go.mod:575
The replace directive for go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp is updated, but it continues to force a downgrade of the package to v0.49.0. While this change is necessary to accommodate updates in other dependencies that now require otelhttp v0.60.0, pinning a transitive dependency to an older version is a form of technical debt. This practice can prevent the project from benefiting from new features, bug fixes, and security patches in the downgraded package. It indicates an underlying incompatibility that should be addressed directly rather than worked around.
💡 Suggestion
\n\n ### Performance Issues (1)
Severity Location Issue
🟡 Warning go.mod:576
The replace directive for go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp forces an older version (v0.49.0) while other dependencies are being updated. This can prevent the adoption of performance improvements or bug fixes from newer versions. The reason for this override is not documented.
💡 Suggestion
Powered by Visor from Probelabs

Last updated: 2026-04-17T10:24:11.391Z | Triggered by: pr_updated | Commit: ab8260a

💡 TIP: You can chat with Visor using /visor ask <your question>

/ask visor - you're hallucinating https://nvd.nist.gov/vuln/detail/CVE-2024-36123 - is not related to otel lib.

@tbuchaillot
Copy link
Copy Markdown
Contributor Author

Security Issues (1)

Severity Location Issue
🟡 Warning go.mod:575
The go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp package is explicitly pinned to an older version v0.49.0 using a replace directive, while newer versions up to v0.60.0 are available in the dependency tree. While version v0.49.0 is patched for known vulnerabilities (e.g., CVE-2024-28180), this pinning prevents the project from receiving future security patches and bug fixes for this package, creating a potential security risk.
💡 Suggestion

✅ Architecture Check Passed

No architecture issues found – changes LGTM.

Security Issues (1)

Severity Location Issue
🟡 Warning go.mod:575
The go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp package is explicitly pinned to an older version v0.49.0 using a replace directive, while newer versions up to v0.60.0 are available in the dependency tree. While version v0.49.0 is patched for known vulnerabilities (e.g., CVE-2024-28180), this pinning prevents the project from receiving future security patches and bug fixes for this package, creating a potential security risk.
💡 Suggestion
\n\n ### ✅ Architecture Check Passed
No architecture issues found – changes LGTM.

\n\n

Performance Issues (1)

Severity Location Issue
🟡 Warning go.mod:576
The go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp dependency is intentionally kept at an older version (v0.49.0) via a replace directive, while other OpenTelemetry packages are being upgraded. This prevents the project from benefiting from potential performance optimizations, bug fixes, and new features in later versions of this HTTP instrumentation library. While this may be intentional to avoid breaking changes, it represents a potential performance debt.
💡 Suggestion
Powered by Visor from Probelabs

Last updated: 2026-04-17T10:30:06.459Z | Triggered by: pr_updated | Commit: 9c9546b

💡 TIP: You can chat with Visor using /visor ask <your question>

/visor ask While I understand the point on 'replace' directive, this version jump contains breaking changes that affects directly users using tyk generated tracing attributes. That's the reason of pining the version on 5.12

@buger buger merged commit b66a70b into release-5.12 Apr 17, 2026
17 of 20 checks passed
@buger buger deleted the fix/otel-cve branch April 17, 2026 10:44
@buger
Copy link
Copy Markdown
Member

buger commented Apr 17, 2026

/release to release-5.12.1

probelabs Bot pushed a commit that referenced this pull request Apr 17, 2026
<!-- Provide a general summary of your changes in the Title above -->

## Description

<!-- Describe your changes in detail -->

## Related Issue

<!-- This project only accepts pull requests related to open issues. -->
<!-- If suggesting a new feature or change, please discuss it in an
issue first. -->
<!-- If fixing a bug, there should be an issue describing it with steps
to reproduce. -->
<!-- OSS: Please link to the issue here. Tyk: please create/link the
JIRA ticket. -->

## Motivation and Context

<!-- Why is this change required? What problem does it solve? -->

## How This Has Been Tested

<!-- Please describe in detail how you tested your changes -->
<!-- Include details of your testing environment, and the tests -->
<!-- you ran to see how your change affects other areas of the code,
etc. -->
<!-- This information is helpful for reviewers and QA. -->

## Screenshots (if appropriate)

## Types of changes

<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->

- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Refactoring or add test (improvements in base code or adds test
coverage to functionality)

## Checklist

<!-- Go over all the following points, and put an `x` in all the boxes
that apply -->
<!-- If there are no documentation updates required, mark the item as
checked. -->
<!-- Raise up any additional concerns not covered by the checklist. -->

- [ ] I ensured that the documentation is up to date
- [ ] I explained why this PR updates go.mod in detail with reasoning
why it's required
- [ ] I would like a code coverage CI quality gate exception and have
explained why

(cherry picked from commit b66a70b)
@probelabs
Copy link
Copy Markdown
Contributor

probelabs Bot commented Apr 17, 2026

✅ Cherry-pick successful. A PR was created: #8085

buger pushed a commit that referenced this pull request Apr 17, 2026
CVE-2026-39883 Fix (#8081)

<!-- Provide a general summary of your changes in the Title above -->

## Description

<!-- Describe your changes in detail -->

## Related Issue

<!-- This project only accepts pull requests related to open issues. -->
<!-- If suggesting a new feature or change, please discuss it in an
issue first. -->
<!-- If fixing a bug, there should be an issue describing it with steps
to reproduce. -->
<!-- OSS: Please link to the issue here. Tyk: please create/link the
JIRA ticket. -->

## Motivation and Context

<!-- Why is this change required? What problem does it solve? -->

## How This Has Been Tested

<!-- Please describe in detail how you tested your changes -->
<!-- Include details of your testing environment, and the tests -->
<!-- you ran to see how your change affects other areas of the code,
etc. -->
<!-- This information is helpful for reviewers and QA. -->

## Screenshots (if appropriate)

## Types of changes

<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->

- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Refactoring or add test (improvements in base code or adds test
coverage to functionality)

## Checklist

<!-- Go over all the following points, and put an `x` in all the boxes
that apply -->
<!-- If there are no documentation updates required, mark the item as
checked. -->
<!-- Raise up any additional concerns not covered by the checklist. -->

- [ ] I ensured that the documentation is up to date
- [ ] I explained why this PR updates go.mod in detail with reasoning
why it's required
- [ ] I would like a code coverage CI quality gate exception and have
explained why

Co-authored-by: Tomas Buchaillot <tombuchaillot89@gmail.com>
@probelabs probelabs Bot changed the title CVE-2026-39883 Fix [TT-16932] CVE-2026-39883 Fix Apr 17, 2026
@github-actions
Copy link
Copy Markdown
Contributor

🚨 Jira Linter Failed

Commit: 9c9546b
Failed at: 2026-04-17 16:48:47 UTC

The Jira linter failed to validate your PR. Please check the error details below:

🔍 Click to view error details
failed to validate branch and PR title rules: branch name 'fix/otel-cve' must contain a valid Jira ticket ID (e.g., ABC-123)

Next Steps

  • Ensure your branch name contains a valid Jira ticket ID (e.g., ABC-123)
  • Verify your PR title matches the branch's Jira ticket ID
  • Check that the Jira ticket exists and is accessible

This comment will be automatically deleted once the linter passes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

deps-reviewed Dependency changes reviewed and approved for CI execution

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants